package ar.edu.utn.frsf.cidisi.upcolbpip.upgen;

import java.io.IOException;
import java.util.HashMap;
import java.util.Vector;

import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;

import ar.edu.utn.frsf.cidisi.upcolbpip.UPColBPIPModel;
import ar.edu.utn.frsf.cidisi.upcolbpip.UpcolbpipFactory;
import ar.edu.utn.frsf.cidisi.upcolbpip.b2bcollaborations.B2BCollaboration;
import ar.edu.utn.frsf.cidisi.upcolbpip.b2bcollaborations.B2bcollaborationsFactory;
import ar.edu.utn.frsf.cidisi.upcolbpip.collaborativebusinessprocesses.CollaborativeBusinessProcess;
import ar.edu.utn.frsf.cidisi.upcolbpip.collaborativebusinessprocesses.CollaborativebusinessprocessesFactory;
import ar.edu.utn.frsf.cidisi.upcolbpip.interactionprotocols.InteractionProtocol;
import ar.edu.utn.frsf.cidisi.upcolbpip.interactionprotocols.InteractionprotocolsFactory;
import ar.edu.utn.frsf.cidisi.upcolbpip.upgen.util.CreateNTree;


public class Main {


//	private UPColBPIPModel modelUpcolbpip;
	
	public static void main(String args[]){

		CreateModel nuevoModelo = new CreateModel(); /* Crea un nuevo modelo limpio UPColBPIP listo para ser modificado*/

		Vector<Vector<String>> combinaciones = (new Backtracking(5,1)).getResult(); /* Genera todos los protocolos posibles*/

		CreateNTree borrar = new CreateNTree();
		borrar.addInteractionProtocols(combinaciones);
		
		nuevoModelo.addInteractionProtocols(combinaciones); /* Agrega los protocolos al modelo */
		
		UPColBPIPModel modelUpcolbpip = nuevoModelo.getModelUpcolbpip(); /* Guarda el resultado en la variable modelUpcolbpip */
		(new WriteUPColBPIPFile()).createUPColBPIPFile("", modelUpcolbpip); /* Se crea el archivo PNML*/
		
		System.out.print(combinaciones.size()); /* Imprime el numero de combinaciones */
	}
	
}